package com.passion.fs.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.passion.common.base.ResultVO;
import com.passion.common.exception.MyException;
import com.passion.common.util.StringUtils;
import com.passion.context.BizServiceBeanContext;
import com.passion.frm.UserLoginFrm;
import com.passion.vo.LoginUser;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 类描述：登录控制器
 *
 * @author ZhuYin
 * @since 2025年01月07日
 */
@Controller
public class LoginController {

    /**
     * 方法说明：用户登录
     *
     * @param request    请求对象
     * @param username   用户名
     * @param password   密码
     * @param code       验证码
     * @param rememberMe 是否记住我
     * @author ZhuYin
     * @since 2025年01月10日
     */
    @PostMapping("/sys/user/doLogin")
    @ResponseBody
    public ResultVO<LoginUser> doLogin(HttpServletRequest request, String username, String password, String code, boolean rememberMe) {
        if (StringUtils.isBlank(username, password)) {
            throw new MyException("账号或密码不能为空");
        }
        // 验证码校验
        // boolean flag = HappyCaptcha.verification(request, code, true);
        // if (!flag) {
        //     throw new MyException("验证码不正确");
        // }
        UserLoginFrm frm = new UserLoginFrm();
        frm.setAccount(username);
        frm.setPasswd(password);
        LoginUser loginUser = BizServiceBeanContext.loginService.doLogin(frm);
        if (loginUser == null) {
            throw new MyException("账号或密码不正确");
        }
        StpUtil.login(loginUser.getId(), rememberMe);
        return ResultVO.getSuccess(loginUser);
    }

    /**
     * 登出
     */
    @GetMapping("/logout")
    public String logout() {
        StpUtil.logout();
        return "redirect:login";
    }
}
